#include #include #include #include pthread_mutex_t x_mutex =PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t y_mutex =PTHREAD_MUTEX_INITIALIZER; int counter=10; main() { pthread_t threadA; pthread_t threadB; void*thread1(); void*thread2(); pthread_mutex_lock(&x_mutex); pthread_mutex_lock(&y_mutex); pthread_create(&threadA, NULL,thread1, NULL); pthread_create(&threadB, NULL,thread2, NULL); pthread_join(threadA, NULL); pthread_join(threadB, NULL); printf("COUNTER %d\n", counter); } void *thread1() { int tempA; tempA=counter+1; pthread_mutex_unlock(&x_mutex); pthread_mutex_lock(&y_mutex); counter=tempA; pthread_exit(NULL); } void *thread2() { int tempB; pthread_mutex_lock(&x_mutex); tempB=counter+2; counter=tempB; pthread_mutex_unlock(&y_mutex); pthread_exit(NULL); }